﻿
/*
*      
*          ┌─┐       ┌─┐
*       ┌──┘ ┴───────┘ ┴──┐
*       │                 │
*       │       ───       │
*       │  ─┬┘       └┬─  │
*       │                 │
*       │       ─┴─       │
*       │                 │
*       └───┐         ┌───┘
*           │         │
*           │         │
*           │         │
*           │         └──────────────┐
*           │                        │
*           │                        ├─┐
*           │                        ┌─┘    
*           │                        │
*           └─┐  ┐  ┌───────┬──┐  ┌──┘         
*             │ ─┤ ─┤       │ ─┤ ─┤         
*             └──┴──┘       └──┴──┘ 
*                 神兽保佑 
*                 代码无BUG! 
*  Author shang
*  2022-07-21 18:24:28
*/

using System.Reflection;
using SqlSugar;


namespace TS.Common.Db;

public class InitTable: DbContext
{
    public static void InitTableAndData()
    {
        var types = AppDomain.CurrentDomain.GetAssemblies()
            .SelectMany(a => a.GetTypes().Where(t => t.GetInterfaces().Contains(typeof(IDbModel))))
            .ToArray();
        //Type[] types = ass.GetTypes();
        foreach (var item in types)
        {
            if (item.IsInterface) continue; //判断是否是接口
            var attr = item.GetCustomAttribute(typeof(SugarTable)) as SugarTable;
            if (attr == null)
                continue;
            if (!Db.DbMaintenance.IsAnyTable(attr.TableName))
                Db.CodeFirst.InitTables(item);
        }
    }
}